-
-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Generate historical temperaments and target-tempered generator-stacks #466
Conversation
@000masa000 please review. |
Hi I am looking at the historical temperaments on https://scaleworkshop.lumipakkanen.com/ |
Number of fourths (down) I would set for 2 flats for Meantone (so a default value of 3, getting us to C-F-Bb-Eb) instead of 4 . |
in the "target" tab a few typos: "Stacking interval" ("c" missing) "Search range" ("r" missing) |
8e7bd08
to
3e1d380
Compare
Fixed found issues. Redeployed to https://scaleworkshop.lumipakkanen.com/ |
in the target mode of historical change default to 1 down, then C-Bb and F-Eb are 7/4s and the scale has a 7/4 and a 7/6 (nice)! looking good otherwise on a first glance...
|
3e1d380
to
298b999
Compare
Updated the code but will redeploy only tomorrow. I will also prompt XA for comments if there are no more code changes by then. |
can commas be added using the syntax + and -? in that case I can make all the main Well Temperaments as presets, even though algorithmic generation is tricky but possible: organise the chain of 16 central 3/2's with 6 down (from C, so including all 5 flats) and 10 up, the pitch range should run from Gb-Db-Ab-Eb-Bb-F-C-G-D-A-E-B-F#-C#-G#-D#-A# (as default) as a list of monzos with increasing powers of 3. Then a subset of 12 notes (11 ratios) will each be modified according to the following rule: the total modification by the end of the chain (12th ratio, determined automatically) should be equal to one pythagorean comma 531441/524288. Along the way modifications are specified as fractions of either this comma or of a syntonic comma, or (in some cases) a sum of two commas (Pythagorean, Schisma). In the background, keep track of fractions of a schisma "left over". If this sounds too confusing let me show a worst case example, the French Well-Temperament by Rameau (1726) tunes the following chain in 1/4 comma meantone : Bb through B, it leaves B-F#-C# as 3/2s, reduced C#-G# by 1/6 Pythagorean Comma, and then splits the difference. Thus, in the chain Bb-D# (2 down) we generate the following 12 ratios using the 1/4 syntonic method --- here it would be nicer (for my way of understanding the shorthand) for the scale display to express (optionally) the Pythagorean ratios and their modification rather than the Dirac bra-ket prime- or generator-count notation.... I am slightly confused by it, actually : can you clarify, see below, generated as 1/4 comma 2 down: the last number I surmise is the fraction of 81/80 used to temper the notes, which are Pythagorean, thus powers of 2 and 3: why are the first two numbers of the 3/2 0 and 0 instead of some powers of 2 and 3, i.e. -1 and 1 for example. Sorry for the question, but I don't fully understand the implementation.... 1/4 comma with down 2: [-4, 0, 7/4> ANYWAY I would do it from fractions like this: start with Pythagorean 2 down: 2187/2048 - at this stage there is one note to tune, D#, producing two fifths: G#-D# and D#-Bb. We have temepered by a total of 7/4 Syntonic + 1/6 Pythagorean. Measured in terms of the Pythagorean Comma, which is what we really want to temper out, we can rewrite this as 7/4(Pythagorean - Schisma) + 1/6(Pythagorean) = 23/12 Pythagorean - 7/4 Schisma. So the amount of comma we need to recouperate is 11/12 Pythagorean - 7/4 Schisma. If we divide the two remaining fifths equally, the amount of tempering applied to D# should be the same value as G# (producing a pure fifth) PLUS 1/2 of the remaining amount, (11/24 of a Pythagorean less 7/8 schisma) Calculating this by hand is mind bending, but the machine can do it easily with a button (divide remaining difference from 1 Pythagorean comma equally amongst the remaining fifths). In fact, this could be a cool way of expressing 12edo: it begins as a user specified Pythagorean tuning, modified by 1\12 Pythagorean. Then, as commas are modified manually, there could be an option to divide remaining commas in the chain equally. So if you set one fifth pure, the reamining ones can be adjusted accordingly. THis could of course be done in either direction (up the fifths or down the fourths) |
one final thought: when pressing a preset button, it would be nice in the front end to see the selection has been made active (color change or radio button) thanks! |
I was actually thinking of changing it to a |
The monzo of |
That well-tempering explanation makes my head spin. Could you write out the algorithm in code instead of English? Does that algorithm generalize to generators other than |
thanks for the clear monzo explanation. |
Well Temperament maybe best I hack together some presets and as we work on it the procedure / algorithm will clarify itself. Explaining is a bit complicated. Basically a chain of 12 fifths needs to have a Pythagorean comma taken away, equally or unequally, across the set of pitches. The usual method involves fractions of a Pythagorean or Syntonic Comma. If using fractions of a Syntonic, then one needs to keep track of the difference Pythagorean - Syntonic = Schisma. Each of these can be expressed as a monzo so it is not hard to notate the tempering. What might be useful is, once the desired commas are positioned, to be able to divide the remaining portion of the tempering across the remaining fifths, since this is kind of the way it was done historically. |
for example: temper 8 fifths by 1/4 Syntonic, have several pure fifths, one tempered by 1/6 Pythagorean comma, then figure out the remainder and divide equally. |
If there is an algorithm for well-tempering, it should go to |
Migth need to tweak the beating equalizer a bit so that it focuses on the multigen when the generator itself is discordant. That way you could create equally beating scales with neutral thirds for example. |
0046452
to
96c3912
Compare
Tweaked the beating equalizer to be aware of multigenerators and displayed MOS sizes. |
96c3912
to
7f03cd1
Compare
@000masa000 Replaced the preset names with ASCII instead of fancy unicode vulgar fractions. Deployed the latest version to the beta server. Would you consider this a good first version of the historical modal dialog? We can always fine-tune things, implement non-western presets and add more radio-tabs in future pull requests. |
I would remove 1/2 comma since it isn't particularly useful nor historically important. I am happy to suggest some more presets, one might be the tuning Helmholtz used (tempering the 3/2s so that -8 fifths = 5/4) with 24 pitches. I need to check how many fifths down his organ used. It would be nice to have a well-temperament section, but maybe I will try to explain it is a clearer way and we can see how it might work. |
7f03cd1
to
73bb9f8
Compare
Removed 1/2 from rank-2 historicals. Added Helmholtz aka Schismatic with down of |
I just noticed that there's some 🐵 business with the name when changing radio tabs. Will fix later... |
I feel like it complicates the process too much. All of the historical examples follow the recipe of distributing a single comma along the spine. We should stick to that for now. There could be a power-user version in the future that supports generators other than 3/2, arbitrary periods and custom offsets per generation. |
Not an easy issue to debug as it's related to how the generated intervals are calculated and reduced. Needs a battery of unit tests. I'm inclined to moving this issue to the |
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:U001Con;
panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
code
{mso-style-priority:99;
font-family:"Courier New";}
span.DefaultFontHxMailStyle
{mso-style-name:"Default Font HxMail Style";
font-family:U001Con;
color:windowtext;
font-weight:normal;
font-style:normal;
text-decoration:none none;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
-->OK, too bad, I really like it! I guess it is just grabbing an extra fifth in the wrong direction and ending up on the wrong side of the octave..... .........................................Marc Sabatmobile DE +49 176 24569023mobile FI +358 ***@***.***://www.plainsound.org From: Lumi PakkanenSent: Thursday, 16 November 2023 18:42To: xenharmonic-devs/scale-workshopCc: Marc Sabat; MentionSubject: Re: [xenharmonic-devs/scale-workshop] Generate historical temperaments and target-tempered generator-stacks (PR #466) OK, the scale I am getting seems to produce a wrong cents value on the 30th note, for some reason it starts with 0. which it shouldn't.... and 1241 is one diesis over the octave....Not an easy issue to debug as it's related to how the generated intervals are calculated and reduced. Needs a battery of unit tests. I'm inclined to moving this issue to the core and freezing development on this PR until we have a well-tested scale generator for well temperaments.—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Please try to reply directly in GitHub. That email boilerplate is horrific. |
I seem to have found the bug. If you choose more than 12 fifths, and set down to 0, then B# is higher than C by a Pythagorean comma. If you set C G to -2 syntonics, B# should be less than C, but instead it generates the scale degree 0 with monzo <0]. Probably needs to wrap around somehow.... |
ea339b6
to
a7f4826
Compare
Hopefully fixed the bug with your scale. (I made a 19 note scale while testing.) |
a7f4826
to
8c53118
Compare
Fixed the size reseting issue. Associated the comma fractions with the spine. |
Would it be possible in the menu for designing the scale to have a reset to 0 button for the 3/2 chain deviations, and a field for the scale name? |
suggestion for triple flats, to use the glyph ♭ three times, because the double-flat and single flat combo looks awkward. In fact I prefer ♭♭♭ , ♭♭, ♭ and ♯, ♯♯, ♯♯♯ rather than the cryptic and confusing "double sharp" sign that no one can really read :) |
Yes to the first one. No to the second one. None of the other generation models have this kind of clutter and you can easily edit the name after you're done with the well tempering phase. |
I'm of the opposite preference. I'll turn this into a user preference with options to use doubles, singles or even ASCII. |
8c53118
to
251256a
Compare
Fixed issues I agree with. Redeployed to https://scaleworkshop.lumipakkanen.com/ |
Working with the well temperament generator. If I mistype comma to an invalid value by mistake and leave the dialogue, when I return the entry field for comma (which has become an invalid /red value) disappears.... couldn't the comma be any value, positive or negative? Thanks for the accidentals option it is really nice to have the extended chain with various display alternatives! |
A thought about the reset deviations button, maybe (since it can be at the end of a long scroll list with hidden deviations), it would be nice to have up top; is there some unobtrusive way to show if there ARE non zero deviations in the list? |
It probably should be at both ends then. I can make it disabled if everything is zero already. |
Well that's a new one! And not unique to this PR. You can do that 🪄 trick to any entry field that accepts intervals. |
Hi! I am wondering if it is possible to not only have note names but an enumeration of the interval? It is useful for exploring where in a chain to set a target modification. I am experimenting with tweaking 53 3/2's towards rational targets, for example taking the "nearest 11/8" and seeing ways of hitting it nicely from the center pitch. This kind of stuff could be useful power tools, checking for fractional unequal distributions of a comma to smoothly approach multiple targets (like a move towards higher rank temperament....) |
That's a bit too much for a simple modal. Maybe we can have power tools in SW3 that take up the whole screen and display useful widgets while creating such complex scales with multiple optimization criteria. Could you write the specs for the power-user version in a new issue? Feel free to include e.g. hand-drawn pictures to sketch out the UI. |
251256a
to
342d515
Compare
Ready for review again. |
342d515
to
1b0596e
Compare
Self-reviewing: Good enough. We can iterate on the design later. |
Move the other Rank-2 temperament modal further down the list.
ref #461